﻿YUI.add('editar-pregunta-list-view', function (Y) {
    'use strict';
    Y.EditarPreguntasCuest = Y.Base.create('EditarPreguntasCuest', Y.View, [], {
        templateIsCharged: false,
        loadTemplate: function () {
            if (this.template == '') {
                var that = this,
                validator = null,
                request = Y.io('/ExcellentProject/scripts/views/cuestionarios/cuestionarios/templates/editar-pregunta.html', {
                    on: {
                        complete: function (id, response) {
                            that.templateIsCharged = true;
                            that.template = response.responseText;
                            that.render();
                        }
                    },
                    failure: function (id, response) {
                        alert(response)
                    }
                })
            }
        },
        events: {
            '.guardar': {
                click: 'guardarPregunta'
            }
        },

        render: function () {
            this.loadTemplate();
            if (this.templateIsCharged) {
                var contentTemplate = Y.Handlebars.compile(this.template);
                this.get('container').setHTML(contentTemplate(this.get('model').getAttrs()));
                if (this.get('model').get('IdPregunta') != 0) {
                    var statusListSelected = Y.one('#estado');
                    statusListSelected.set('value', this.get('model').get('Estado'));
                }
            }
        },
        guardarPregunta: function (ev) {
            var model = this.get('model');

            var requiredMessages = '';

            //validacion de campos requeridos
            if (Y.one('#inputEnunciado').get('value') == '') {
                Y.one('#enunciadoGroup').removeClass('has-success')
                Y.one('#enunciadoGroup').toggleClass('has-error', true)
                requiredMessages = ' - Enunciado requerido. <br/>';

            } else {
                Y.one('#enunciadoGroup').removeClass('has-error')
                Y.one('#enunciadoGroup').toggleClass('has-success', true)
            }

            if (Y.one('#inputCodigoTipo').get('value') == '') {
                Y.one('#codigotipoGroup').toggleClass('has-success')
                Y.one('#codigotipoGroup').toggleClass('has-error', true)
                requiredMessages += ' - Tipo de Código requerido. <br/>';

            } else {
                Y.one('#codigotipoGroup').removeClass('has-error')
                Y.one('#codigotipoGroup').toggleClass('has-success', true)
            }

            if (Y.one('#inputCodigoCategoria').get('value') == '') {
                Y.one('#codigocategoriaGroup').toggleClass('has-success')
                Y.one('#codigocategoriaGroup').toggleClass('has-error', true)
                requiredMessages += ' - Código Categoria requerido. <br/>';

            } else {
                Y.one('#codigocategoriaGroup').removeClass('has-error')
                Y.one('#codigocategoriaGroup').toggleClass('has-success', true)
            }

            if (Y.one('#inputCodigoArea').get('value') == '') {
                Y.one('#codigoareaGroup').toggleClass('has-success')
                Y.one('#codigoareaGroup').toggleClass('has-error', true)
                requiredMessages += ' - Código de Área requerido. <br/>';

            } else {
                Y.one('#codigoareaGroup').removeClass('has-error')
                Y.one('#codigoareaGroup').toggleClass('has-success', true)
            }

            if (Y.one('#inputCalificacion').get('value') == '') {
                Y.one('#calificacionGroup').toggleClass('has-success')
                Y.one('#calificacionGroup').toggleClass('has-error', true)
                requiredMessages += ' - Calificación requerida. <br/>';

            } else {
                Y.one('#calificacionGroup').removeClass('has-error')
                Y.one('#calificacionGroup').toggleClass('has-success', true)
            }
            if (requiredMessages != '') {
                bootbox.dialog({
                    message: requiredMessages,
                    title: "Problemas de Validación",
                    show: true,
                    backdrop: true,
                    closeButton: true,
                    animate: true,

                    className: "my-modal",
                    buttons: {
                        success: {
                            label: "Ok",
                            className: "btn btn-info",
                            callback: function () { }
                        }
                    }
                });
                return;
            }

            model.setAttrs({
                IdPregunta: Y.one('#id').get('value'),
                Enunciado: Y.one('#inputEnunciado').get('value'),
                CodigoTipo: Y.one('#inputCodigoTipo').get('value').trim(),
                CodigoCategoria: Y.one('#inputCodigoCategoria').get('value').trim(),
                CodigoArea: Y.one('#inputCodigoArea').get('value').trim(),
                Calificacion: Y.one('#inputCalificacion').get('value').trim(),
                Estado: Y.one('#estado').get('value').trim()
            });
            var options = null;
            if (model.get('IdPregunta') != 0)
                options = { action: 'update', idPregunta: model.get('IdPregunta') };
            else {
                options = { urlName: 'saveOption' };
                model.set('IdPregunta', 0)
            }
            var that = this, a = model.save(options, function (err, response) {
                if (err != null)
                    bootbox.dialog({
                        message: "Ocurrieron problemas al actualizar la pregunta seleccionada",
                        title: "Problemas al registrar la pregunta",
                        show: true,
                        backdrop: true,
                        closeButton: true,
                        animate: true,

                        className: "my-modal",
                        buttons: {
                            success: {
                                label: "Ok",
                                className: "btn btn-danger",

                                /**
                                 * @optional Function
                                 * the callback to invoke when this button is clicked
                                 */
                                callback: function () { }
                            }
                        }
                    });
                else {

                    bootbox.dialog({
                        message: "<h5>Pregunta grabada</h5>",
                        title: "Confirmación",
                        show: true,
                        backdrop: true,
                        closeButton: true,
                        animate: true,

                        className: "my-modal",
                        buttons: {
                            success: {
                                label: "Ok",
                                className: "btn btn-success",

                                callback: function () { }
                            }
                        }
                    });
                }
            });
        }
    })

}, '0.0.0.1', { requires: ['view', 'handlebars', 'handlebars-select-helper', 'node', 'pregunta-model-list', 'pregunta-model', 'event', 'node-event-simulate'] })